import request from '@/utils/axios/index'
import type { Dayjs } from 'dayjs'

/** 合同档案信息 */
export interface ContractArchive {
  id: number // id
  contractName: string // 合同名称
  contractCode: string // 合同编号
  customerId: number // 委托单位id
  customerName: string // 委托单位(甲方)名称
  signTime: string | Dayjs // 签约时间
  powerAccount: string // 用电户号
  projectCode: string // 项目编码
  customerDirectorName: string // 甲方负责人
  contactNumber: string // 联系电话
  companyDirectorName: string // 乙方负责人
  manageUnitId: number // 管理单元id
  manageUnitName: string // 管理单元名称
  costomerManager: string // 客户经理
  powerLocation: string // 用电位置省市区
  powerAddress: string // 用电地址
  powerArea: string // 用电片区
  serviceContent: string // 合同服务项目
  supplement: string // 补充条款
  transformerAmount: number // 变压器总数量
  totalVolume: number // 变压器总容量
  measureAmount: number // 应安装监测表数量
  contractStartTime: string | Dayjs // 合同开始时间
  contractEndTime: string | Dayjs // 合同终止时间
  contractMonthNumber: number // 合同服务期限
  contractMonthText: string // 合同服务期限大写
  feePerMontNumber: number // 月服务费
  feePerMontText: string // 月服务费大写
  factFeePerMonthNumber: number // 实际月服务费
  factFeePerMonthText: string // 实际月服务费大写
  contractPriceNumber: number // 合同总价
  contractPriceText: string // 合同总价大写
  firstPay: number // 首次付款金额
  firstPayDate: string | Dayjs // 首次支付时间
  instalmentCount: number // 分期期数
  receiveInterval: number // 分期支付收款间隔(月)
  intervalPay: number // 每期支付金额
  serviceUnitId: number // 服务单元id
  serviceManagerName: string // 服务经理
  introducer: string // 介绍人
  introduceChannel: string // 介绍渠道
  remark: string // 备注
  attachmentUrl: string // 附件
  ownerUserId: number // 负责人id
}

// 合同档案 API
export const ContractArchiveApi = {
  // 查询合同档案分页
  getContractArchivePage: async (params: any) => {
    return await request.get({ url: `/san/biz-contract-archive/page`, params })
  },

  // 查询合同档案详情
  getContractArchive: async (id: number) => {
    return await request.get({ url: `/san/biz-contract-archive/get?id=` + id })
  },

  // 新增合同档案
  createContractArchive: async (data: ContractArchive) => {
    return await request.post({ url: `/san/biz-contract-archive/create`, data })
  },

  // 修改合同档案
  updateContractArchive: async (data: ContractArchive) => {
    return await request.put({ url: `/san/biz-contract-archive/update`, data })
  },

  // 删除合同档案
  deleteContractArchive: async (id: number) => {
    return await request.delete({ url: `/san/biz-contract-archive/delete?id=` + id })
  },

  /** 批量删除合同档案 */
  deleteContractArchiveList: async (ids: number[]) => {
    return await request.delete({
      url: `/san/biz-contract-archive/delete-list?ids=${ids.join(',')}`
    })
  },

  // 导出合同档案 Excel
  exportContractArchive: async (params) => {
    return await request.download({ url: `/san/biz-contract-archive/export-excel`, params })
  },

  // 修改合同档案
  changeStatus: async (data: ContractArchive) => {
    return await request.put({ url: `/san/biz-contract-archive/changeStatus`, data })
  },

  // 续签合同档案
  renewContractArchive: async (data: ContractArchive) => {
    return await request.put({ url: `/san/biz-contract-archive/renew`, data })
  },

  // 查询合同档案详情
  getAutoGenerateCode: async (ruleCode: string) => {
    return await request.get({
      url: `/san/biz-contract-archive/getAutoGenerateCode?ruleCode=` + ruleCode
    })
  }
}
